var instNode;
//角色信息grid
var roleId = '';
// 角色默认标志位
var roleFlag = '1';
$( function() {
	//加载的时候去cookie拿当前页面的样式
	if ($.cookie('easyuiThemeName')) {
		parent.changeThemeFun($.cookie('easyuiThemeName'));
	}
	$('#sysRoleList')
			.datagrid(
					{
						width : $(window).width() - 17, // 宽度，这里算的是iframe的宽度。
						height : $(window).height() - 117,
						nowrap : false,
						striped : true,
						collapsible : true,
						url : "findAllSysRoles?"
								+ encodeURI($("#searchForm").ajaxForm()
										.formSerialize()),
						// idField : 'code',
						// 需冻结的列
						frozenColumns : [ [  ] ],
						// 表头
						columns : [ [ {
							field : 'id',
							title : 'id',
							hidden : true,
							width : 10
						}, {
							field : 'name',
							title : '角色名称',
							width : 120
						}, {
							field : 'code',
							title : '角色代码',
							width : 120
						}, {
							field : 'remark',
							title : '备注',
							width : 120
						} ,{
							field : 'flag',
							title : 'flag',
							hidden : true,
							width : 10
						}] ],
						// 是否把数据显示在一行上，如果设置为false，当数据长度超过列长度时，超过的部分被截掉
						nowrap : true,
						// 是否包含页脚的分页
						pagination : true,
						rownumbers : true,
						singleSelect : true,
						onClickRow: function(rowIndex, rowData){
							instNode.uncheck_all();
							roleId = rowData.id;
							roleFlag = rowData.flag;
							$.ajax( {
								type : "POST",
								url : "findSysMenusBySysRoleId",
								data : "sysRoleBean.id=" + roleId,
								success : function(data) {
									$.each(data.sysMenuBeans, function(i, item) {
										instNode.open_node(getNodeId(item.id), null, true);
										instNode.alone_checked(getNodeId(item.id));
									});
								}
							});
						}
					// 单选
					});
	// 查询
	$("#searchButton").click( function() {
		toQuery();
	});
	
	initTree();
});

function initTree(){
	$.ajaxSetup( {
		cache : false
	});// ajax调用不使用缓存
	$("#menuTreeInfo")
			.jstree( {// menu_tree 为 由Jquery选择器选中的DIV容器的ID
						"themes" : {
							"theme" : "classic",
							"dots" : true,
							"icons" : false
						},
						"json_data" : {
							"ajax" : {
								"url" : "findAllSysMenus",
								"data" : function(n) {
									return {
										id : n.attr ? n.attr("id") : 0
									};
								}
							}
						},
						"core" : {
							"strings" : {
								"loading" : "菜单加载中……"
							}
						},
						// 插件使用右键菜单支持自定义右键菜单
						"plugins" : [ "themes", "json_data", "ui", "crrm",
								"mycheckbox" ]
					});
	$("#menuTreeInfo").bind("loaded.jstree", function(e, data) {
		instNode = data.inst;
	});
}

/**
* 获取选中节点及其直接和间接父节点的方法
*/
function getCheckedNode() {
	var ids = "";
	var checked = instNode.get_all_checked();
	for (i = 0; i < checked.length; i++) {
		ids += checked[i] + ",";
	}
	return ids.substring(0, ids.length - 1);
}

//通过节点ID获取节点对象
function getNodeId(nodeId) {
	return "#" + nodeId + "";
}

/**
 * 保存
 * @return
 */
function saveRoleMenu() {
	var gr = $('#sysRoleList').datagrid('getSelections');
	if (gr == '') {
		$.messager.alert('提示',"请选择记录!");
		return false;
	}
	var win = $.messager.progress( {
		title : '请等待',
		msg : '保存中...',
		text : ''
	});
	if (roleFlag == '0') {
		var unchecked = instNode.get_all_unchecked();
		var unchecked_str = "";
		$.messager.progress('close');
		for ( var i = 0; i < unchecked.length; i++) {
			if ($(unchecked[i]).attr("flag") + "\n" == 0
					|| $(unchecked[i]).attr("flag")
							+ "\n" == "0") {
				unchecked_str += "  "
						+ instNode
								.get_text(unchecked[i]);
			}
		}
		if (unchecked_str != "") {
			$.messager.alert('提示', "禁止取消系统角色的默认菜单,请重新设置!\n" + "相关菜单为："
					+ unchecked_str);
			return;
		}
	}
	$.ajax( {
		type : "POST",
		url : "setSysMenu",
		data : "sysRoleBean.id=" + roleId
				+ "&sysRoleBean.sysMenuIDs="
				+ getCheckedNode(),
		success : function(data) {
			$.messager.progress('close');
			if (data) {
				$.messager.alert('提示', '设置成功!');
			} else {
				$.messager.alert('提示', "设置失败!");				
			}
		},
		error : function(XMLHttpRequest, textStatus,
				errorThrown) {
			$.messager.alert('提示', "设置失败!");				
		}
	});
}

function toQuery() {
	$('#sysRoleList')
			.datagrid(
					{
						url : "findAllSysRoles?"
								+ encodeURI($("#searchForm").ajaxForm()
										.formSerialize())
					});
}
